/*
 * MapObjectNode.cpp
 */

#include "MapObjectNode.h"
#include <typeinfo>

MapObjectNode::MapObjectNode() {}

MapObjectNode::~MapObjectNode() {
	delete data;
	//std::cout << "Kill edge node\n";
}

MapObject* MapObjectNode::getNodeValue() const{
	return this->data;
}

void MapObjectNode::setNodeValue(MapObject* value) {
	this->data = value;
}

MapObjectNode::MapObjectNode(const MapObjectNode &mapObjectNode) {
	this->setNext(mapObjectNode.getNext());
	data = mapObjectNode.data;
}

MapObjectNode& MapObjectNode::operator=(const MapObjectNode &mapObjectNode) {
	this->setNext(mapObjectNode.getNext());
	this->data = mapObjectNode.data;
	return *this;
}

MapObjectNode* MapObjectNode::clone() const {
	return new MapObjectNode(*this);
}

bool MapObjectNode::equals(const Node& node) const {
	if (typeid(&node) == typeid(this)) {
		MapObjectNode& mapObjectNode = (MapObjectNode&)node;
		if (this->getNodeValue()->getId().compare(mapObjectNode.getNodeValue()->getId()) == 0) {
			return true;
		}
	}
	return false;
}
